.\" -*- nroff -*-
.\" Licensed under the OpenIB.org BSD license (FreeBSD Variant) - See COPYING.md
.\"
.TH IBV_CREATE_WQ 3 2016-07-27 libibverbs "Libibverbs Programmer's Manual"
.SH "NAME"
ibv_create_wq, ibv_destroy_wq \- create or destroy a Work Queue (WQ).
.SH "SYNOPSIS"
.nf
.B #include <infiniband/verbs.h>
.sp
.BI "struct ibv_wq *ibv_create_wq(struct ibv_context " "*context,"
.BI "                                     struct ibv_wq_init_attr " "*wq_init_attr" );
.sp
.BI "int ibv_destroy_wq(struct ibv_wq " "*wq" );
.fi
.SH "DESCRIPTION"
.B ibv_create_wq()
creates a WQ associated with the ibv_context
.I context\fR.
The argument
.I wq_init_attr
is an ibv_wq_init_attr struct, as defined in <infiniband/verbs.h>.
.PP
.nf
struct ibv_wq_init_attr {
.in +8
void                      *wq_context;    /* Associated context of the WQ */
enum ibv_wq_type           wq_type;       /* WQ type */
uint32_t                   max_wr;        /* Requested max number of outstanding WRs in the WQ */
uint32_t                   max_sge;       /* Requested max number of scatter/gather (s/g) elements per WR in the WQ */
struct  ibv_pd            *pd;            /* PD to be associated with the WQ */
struct  ibv_cq            *cq;            /* CQ to be associated with the WQ */
uint32_t                   comp_mask;     /* Identifies valid fields. Use ibv_wq_init_attr_mask */
uint32_t                   create_flags    /* Creation flags for this WQ, use enum ibv_wq_flags */
.in -8
};

.sp
.nf
enum ibv_wq_flags {
.in +8
IBV_WQ_FLAGS_CVLAN_STRIPPING            = 1 << 0, /* CVLAN field will be stripped from incoming packets */
IBV_WQ_FLAGS_SCATTER_FCS                = 1 << 1, /* FCS field will be scattered to host memory */
IBV_WQ_FLAGS_DELAY_DROP                 = 1 << 2, /* Packets won't be dropped immediately if no receive WQEs */
IBV_WQ_FLAGS_PCI_WRITE_END_PADDING      = 1 << 3, /* Incoming packets will be padded to cacheline size */
IBV_WQ_FLAGS_RESERVED                   = 1 << 4,
.in -8
};
.nf
.fi
.PP
The function
.B ibv_create_wq()
will update the
.I wq_init_attr\fB\fR->max_wr
and
.I wq_init_attr\fB\fR->max_sge
fields with the actual \s-1WQ\s0 values of the WQ that was created;
the values will be greater than or equal to the values requested.
.PP
.B ibv_destroy_wq()
destroys the WQ
.I wq\fR.
.SH "RETURN VALUE"
.B ibv_create_wq()
returns a pointer to the created WQ, or NULL if the request fails.
.PP
.B ibv_destroy_wq()
returns 0 on success, or the value of errno on failure (which indicates the failure reason).
.SH "SEE ALSO"
.BR ibv_modify_wq (3),
.SH "AUTHORS"
.TP
Yishai Hadas <yishaih@mellanox.com>
